// 声明关键字处理类
#pragma once
#include <cppjieba/Jieba.hpp>
#include <string>
#include <set>
#include <map>

class KeywordProcessor
{
public:
    KeywordProcessor();
    void process(const std::string &chDir, const std::string &enDir);

public:
    // 英文处理
    void create_en_dict(const std::string &dir, const std::string &outfile);
    void build_en_index(const std::string &dict, const std::string &index);

    // 中文处理
    void create_cn_dict(const std::string &dir, const std::string &outfile);
    void build_cn_index(const std::string &dict, const std::string &index);

    // 工具函数
    void load_stopwords(const std::string &filename, std::set<std::string> &stopwords);

    // private:
    //     // 辅助函数
    //     bool is_punctuation_or_digit(const std::string &str);

private:
    // 辅助函数
    bool contains_chinese(const std::string &str);

private: // 数据成员都是通过构造函数初始化的
    cppjieba::Jieba m_tokenizer;
    std::set<std::string> m_enStopWords;
    std::set<std::string> m_chStopWords;
};